package com.gill.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class StartWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	/**
	 * 扫描与spring上下文相关的bean
	 * @return 获取指定包路径下的Class数组
	 */
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[]{SpringRootConfig.class};
	}

	/**
	 * 扫描与DispatcherServlet上下文中相关的bean
	 * @return 获取指定包路径下的Class数组
	 */
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[]{MvcConfig.class};
	}

	/**
	 * 建立映射关系,所有的请求映射为"/"，代表所有请求都由"/"对应的servlet来处理
	 * @return 映射关系数组
	 */
	@Override
	protected String[] getServletMappings() {
		return new String[]{"/"};
	}

	/**
	 * 拦截请求，设置编码（避免传递到后端的数据是乱码）
	 * @return 过滤器数组（请求过滤规则）
	 */
	@Override
	protected Filter[] getServletFilters() {
		CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
		encodingFilter.setEncoding("UTF-8");
		encodingFilter.setForceEncoding(true);//强制设置编码
		return new CharacterEncodingFilter[]{encodingFilter};
	}
}
